import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

/**
 * Write a description of class Searchengine here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class SearchEngine
{

    /**
     * Constructor for objects of class Searchengine
     */
    public SearchEngine()
    {
    }
    
    /**
     * Zoekt naar optredens.
     * @return   Lijst van de gevonden optredens.
     */
    public List<Optreden> searchOptreden(String search, boolean personal)
    {
        List<Optreden> optredens = new ArrayList<Optreden>();
        if (personal) {
            optredens = Database.getCurrentUser().getOptredens();
        }
        else
            optredens.addAll(Database.getOptredens());
        List<Optreden> gevondenoptredens = new ArrayList<Optreden>();
        for (Optreden optreden : optredens)
        {
            if (stringVergelijking(optreden.getTitle(), search))   
                gevondenoptredens.add(optreden);
        }
        return gevondenoptredens;
    }
    
    /**
     * Zoekt naar commentaren.
     * @return   Map van de gevonden gebruikers met bijhorende commetaren.
     */
    public Map<Gebruiker, List<Commentaar>> searchCommentaren(String search)
    {
        List<Gebruiker> gebruikers = Database.getUsers();
        List<Gebruiker> gevondengebruikers = new ArrayList<Gebruiker>();
        Map<Gebruiker, List<Commentaar>> usermap = new HashMap<Gebruiker, List<Commentaar>>();
        for (Gebruiker gebruiker : gebruikers)
        {
            if (stringVergelijking(gebruiker.getSchermnaam(), search))
                gevondengebruikers.add(gebruiker);
        }
        for ( Gebruiker gevondengebruiker : gevondengebruikers)
            usermap.put(gevondengebruiker, Database.getComments(gevondengebruiker));
        return usermap;
    }
    
    /**
     * Vergelijkt 2 strings.
     * @return   true bij overeenkomst.
     */
    private boolean stringVergelijking(String splits, String search)
    {
        if (splits.toLowerCase().trim().contains(search.toLowerCase()))
            return true;
        else
            return false;
    }
}
